<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //对象 一个具体的事物
        //js中的对象是一组无序的相关属性和方法的集合，所有的事物都是对象 例如字符串，数值，数组，函数等
        //对象由 属性 和 方法 组成
        //属性：事物的特征 在对象中用属性来表示（常用名词）
        //方法：事物的行为 在对象中用方法来表示（常用动词）

        // 为什么需要对象？
        //保存一个值时,可以使用变量,保存多个值( -组值)时,可以使用数组。如果要保存一个人的完整信息呢?

        // 创建对象(object)  使用对象
        //1.字面量创建对象'{}'--------------------------------------------------------------
        //var obj = {}; //创建空的对象
        var obj = {
                //属性
                nname: '张三疯',
                age: 18,
                sex: '男',
                //方法
                sayHi: function() {
                    console.log('hi');
                }
            }
            //(1)里面的属性或方法采用键值对形式 建 属性名：值 属性值
            //(2)多个属性中间用逗号隔开
            //(3)方法冒号后面跟的是一个匿名函数

        //2.使用对象
        //(1)调用对象的属性 我们采取 对象名.属性名  '.'我们理解为'的'；
        console.log(obj.nname);
        //(2)调用属性还有一个方法 对象名['属性名']
        console.log(obj['age']);
        //(3)调用对象的方法 sayHi  对象名.方法名();  不要忘记添加()
        obj.sayHi();


        // 练习：
        // 创建一个dog的对象
        var dog = {
                //添加属性
                kname: '可可',
                type: '阿拉斯加犬',
                age: 5,
                color: '棕红色',
                //添加方法
                brak: function() {
                    console.log('汪汪汪');
                },
                showFilm: function() {
                    console.log('演电影');
                }
            }
            //调用属性
        console.log(dog.color);
        console.log(dog['kname']);
        //调用方法
        dog.brak();

        // 变量:单独声明赋值,单独存在

        // 属性:对象里面的变量称为属性,不需要声明,用来描述该对象的特征

        // 函数:单独存在的,通过”函数名{}”的方式就可以调用

        // 方法:对象里面的函数称为方法,方法不需要声明,使用“对象.方法名()”的方式就可以调用,方法用来描述该对象
        //的行为和功能。

        //----------------------------------------------------------------------------------------------------------

        //2.new Object创建对象--------------------------------------------------------------
        var oBj = new Object(); //创建一个空对象
        //添加属性
        oBj.uname = '李四';
        oBj.age = 18;
        oBj.sex = '男';
        //添加方法
        oBj.shuoHua = function() {
                console.log('hi');
            }
            //(1)我们是利用等号=赋值的方法添加对象的属性和方法
            //(2)每个属性和方法之间用分号结束

        console.log(oBj.uname);
        console.log(oBj['age']);
        oBj.shuoHua();

        // 练习：
        var mingRen = new Object();
        mingRen.mname = '鸣人';
        mingRen.sex = '男';
        mingRen.age = 19;
        mingRen.skill = function() {
            console.log('影分身术');
        }
        console.log(mingRen.mname);
        console.log(mingRen['age']);
        mingRen.skill();
    </script>
</head>

<body>

</body>

</html>